//======================================================================================
//  Apache License, Version 2.0
//  Notes:Use this command to anonymously check out the latest project source code:
//  Non-members may check out a read-only working copy anonymously over HTTP.
//  SVN checkout http://YHHLineCommandWsp.googlecode.com/svn/trunk/ 
//
//  Author:		Kevin Yang
//  Email:		Bigearrabbit@qq.com
//
//  DATE:		2013-4-6
//
//  File Name:	
//
//  Notes:
//
//======================================================================================

#ifndef YHHILineCommandFactory_H
#define YHHILineCommandFactory_H

// Local Framework
#include "YHHLineCommandItf.h"
#include "YHHILineCommandChild.h"
#include "YHHLineCommandChildParam.h"

// System Framework
#include "CATBaseUnknown.h"

class CATISpecObject;

extern ExportedByYHHLineCommandItf IID IID_YHHILineCommandFactory ;

/// <summary>YHHLineCommandChild Factory</summary>
/// <return></return>
/// <remarks> Class extending the CATPrtCont object: The container of specifications
/// in the Part document.It is an interface for:
/// YHHLineCommandInterfaces.YHHILineCommandFactory</remarks>
/// <author>Kevin Yang</author>
/// <date>2013-4-5</date>
class ExportedByYHHLineCommandItf YHHILineCommandFactory: public CATBaseUnknown
{
  CATDeclareInterface;

  public:

	  /// <summary>Create YHHILineCommandChild Instance</summary>
	  /// <param name="ipiValue"> Input Param Value</param>
	  /// <param name="oppLineCommand"> Out Instance</param>
	  /// <return>HRESULT</return>
	  /// <remarks>Implements the method CreateYHHILineCommand of the interface YHHILineCommandFactory</remarks>
	  /// <author>Kevin Yang</author>
	  /// <date>2013-4-5</date>
	  virtual HRESULT CreateYHHILineCommand(YHHILineCommandChild ** oppLineCommand,
		  const YHHLineCommandChildParam * ipiValue = NULL) = 0 ;

};

/// <summary>Macro for Handlers </summary>
CATDeclareHandler( YHHILineCommandFactory, CATBaseUnknown );
#endif
